home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Scene 96
/
Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso
/
misc
/
coding
/
vgacodng
/
part08_b.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-11-22
|
1KB
|
58 lines
program Plasma_Pascal;
uses crt;
var Wert1,Wert2,Wert3,Wert4 : byte;
TWert1,TWert2,TWert3,TWert4 : byte;
SinTab : array[0..255] of byte;
n1,n2 : word;
col : byte;
procedure SetPal(col,r,g,b:byte);
begin
port[$3C8] := col;
port[$3C9] := r;
port[$3C9] := g;
port[$3C9] := b;
end;
procedure CalcSinus(Ofs,Amp:byte;Len,Par:word);
begin
for n1 := 0 to Len do SinTab[n1] := round(sin(n1/Par*pi*Len/180*2)*Amp)+Ofs;
end;
begin
CalcSinus(32,31,255,360);
asm mov ax,13h; int 10h end;
for n1 := 0 to 127 do begin
setpal(n1,n1 div 6,n1 div 3,n1 div 3);
setpal(255-n1,n1 div 6,n1 div 3,n1 div 3);
end;
repeat
TWert3 := Wert3;
TWert4 := Wert4;
for n1 := 0 to 319 do begin
TWert1 := Wert1;
TWert2 := Wert2;
for n2 := 0 to 199 do begin
col := SinTab[TWert1] + SinTab[TWert2] +
SinTab[TWert3] + SinTab[TWert4]; { Farbwert berechnen }
mem[$A000:n2*320+n1] := col;
inc(TWert1,4);
inc(TWert2,3);
end;
inc(TWert3,4);
inc(TWert4,5);
end;
dec(Wert1,4); { Bewegung des Plasmas }
inc(Wert3,4);
inc(Wert1,random(1)); { Zufallswerte bewirken, daß das Plasma }
dec(Wert2,random(2)); { etwas unregelmäßig wird }
inc(Wert3,random(1));
dec(Wert4,random(2));
until keypressed;
readkey;
asm mov ax,3; int 10h end;
end.